#pragma once
//////////////////////////////////////////////////////////////////////////////
// IShellFolderViewCBImpl

template< class T >
class ATL_NO_VTABLE IShellFolderViewCBImpl : public IShellFolderViewCB
{
public:
   STDMETHOD(MessageSFVCB)(UINT uMsg, WPARAM wParam, LPARAM lParam)
   {
		ATLTRACE2(atlTraceCOM, 0, _T("IShellFolderViewCB::MessageSFVCB  msg=%ld wp=0x%X lp=0x%X\n"), uMsg, wParam, lParam);
		switch (uMsg)
		{
		case SFVM_WINDOWCREATED:
			ATLTRACE(L"[MessageSFVCB]SFVM_WINDOWCREATED");
			break;
		case SFVM_GETNOTIFY:
			ATLTRACE(L"[MessageSFVCB]SFVM_WINDOWCREATED");
			break;
		}
		LRESULT lResult = 0;
		T* pT = static_cast<T*>(this); pT;
		BOOL bResult = pT->ProcessWindowMessage(NULL, uMsg, wParam, lParam, lResult, 0);
		return bResult ? (HRESULT) lResult : E_NOTIMPL;
   }
};
